#ifndef LOMOUTSTREAMHH
#define LOMOUTSTREAMHH
#include "typedefs.hh"
#include "lom-typedefs.hh"

namespace lom
{
    class ILomValueFactory;
    class LomClassManager;
    class LomValue;
    class LomInstance;
    class LomClass;

    class ILomOutStream
    {
    public:
	virtual ~ILomOutStream(){}
	virtual void operator<<( licada::TNameType val) = 0;
	virtual void operator<<( lom::EDataType dtype ) = 0;
	virtual void operator<<( const lom::LomValue* val ) = 0;
	virtual void operator<<( const lom::TValueVector& val ) = 0;
	virtual void operator<<( const lom::LomInstance& val ) = 0;
	virtual void operator<<( const lom::LomClass& val ) = 0;
    };
    

}

#endif
